本章中，我们将探索一种叫做表达式模板的模板编程技术，最初是为了支持数字数组类而发明的。

数字数组类支持对整个数组对象进行数字操作，可以将两个数组相加，结果包含的元素是参数数组中相应值的和。类似地，整个数组可以乘以一个标量，这意味着数组的每个元素都要扩展。自然，保留内置标量类型所熟悉的操作符表示法是可行的:

\begin{lstlisting}[style=styleCXX]
Array<double> x(1000), y(1000);
...
x = 1.2*x + x*y;
\end{lstlisting}

对于专注于数据分析的开发者来说，在运行代码的平台上高效地计算这些表达式是至关重要的。使用本例中的运算符表示法来实现这一点，并不是一项简单的任务，但是表达式模板可以帮助我们。

表达式模板让人想起模板元编程，因为表达式模板有时依赖于深度嵌套的模板实例化，这与模板元程序中遇到的递归实例化相同。这两种技术最初都是为了支持高性能数组操作而开发的(请参阅第23.1.3节中使用模板展开循环的示例)。当然，技术是互补的。元编程对于固定大小的小型数组很方便，而表达式模板对于运行时大小为中型到大型数组的操作非常有效。









































